package org.apache.nutch.indexwriter.song;

import org.apache.lucene.document.FieldType;
import org.apache.lucene.index.IndexOptions;

/**
 *
 * @Author Joycessh
 * @Description
 * @Date 5/1/19 3:38 PM
 */
public class FieldTypeUtils {

//    IndexOptions 索引选项说明：
//
//    NONE：Not indexed 不索引
//
//    DOCS: 反向索引中只存储了包含该词的 文档id，没有词频、位置
//
//    DOCS_AND_FREQS: 反向索引中会存储 文档id、词频
//
//    DOCS_AND_FREQS_AND_POSITIONS:反向索引中存储 文档id、词频、位置
//
//    DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS :反向索引中存储 文档id、词频、位置、偏移量

    public static final FieldType getIndexedStoredType() {
        FieldType indexedStoredType = new FieldType();
        indexedStoredType.setStored(true);
        indexedStoredType.setTokenized(false);
        indexedStoredType.setIndexOptions(IndexOptions.DOCS);
        indexedStoredType.freeze();
        return indexedStoredType;
    }

    public static final FieldType getIndexedTermVectorsStoredType() {
        FieldType indexedTermVectorsStoredType = new FieldType();
        indexedTermVectorsStoredType.setStored(true); //是否存储
        indexedTermVectorsStoredType.setTokenized(true); //是否分词
        indexedTermVectorsStoredType.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS); //设置该字段的索引选项
        indexedTermVectorsStoredType.setStoreTermVectors(true); //设置为该字段保存词项向量
        indexedTermVectorsStoredType.setStoreTermVectorOffsets(true); //偏移量
        indexedTermVectorsStoredType.setStoreTermVectorPositions(true); //位置
        indexedTermVectorsStoredType.freeze(); //使之不可更改
        return indexedTermVectorsStoredType;
    }
}
